package com.teemor.common.idempotentspringbootstarter.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface KeyField {

    /**
     * 指定入参里面哪些字段作为校验所用的key，通常会有一个唯一性的业务主键。
     * 避免特殊情况无法处理，因此这里可以指定多个字段联合作为判断
     * @return
     */
    String[] value() default {};

    @AliasFor("value")
    String[] field() default {};

}
